package com.itheima.test;

import java.util.Random;
import java.util.Scanner;

public class Test11 {
    public static void main(String[] args) {
        //需求：生成一个彩票系统
        int[] arr = createNumber();//生成一个抽奖数组
        int[] sarr = userInputNumber(arr.length);//把用户输入的竞猜数字存入到sarr数组中
        findCount(arr,sarr);//对比两个结果并给出最后的奖金
        //打印奖池给用户看
        System.out.println("中奖号码如下：");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    public static void findCount(int[] arr,int[] sarr){
        int redCount = 0;//记录中奖的红球数字
        int blueCount = 0;//记录中奖的蓝球数字
        //两个for循环计算中奖的红球数字
        for (int i = 0; i < sarr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1; j++) {
                if(sarr[i] == arr[j]){
                    redCount++;
                    //如果找到了，那么后面的数字就没有必要继续比较了
                    //跳出内循环，继续判断下一个红球号码是否中奖
                    break;
                }
            }
        }
        //计算中奖的篮球数字
        if(sarr[sarr.length - 1] == arr[arr.length - 1]){
            blueCount++;
        }
        price(redCount,blueCount);//对用户输入的竞猜数字进行判断中不中奖
    }

    //把用户输入的竞猜数字存入到sarr数组中
    public static int[] userInputNumber(int length){
        Scanner sc = new Scanner(System.in);
        int[] sarr = new int[length];
        for (int i = 0; i < sarr.length - 1;) {
            System.out.println("请输入第" + (i+1) + "个竞猜数字:");
            int rednumber = sc.nextInt();//依次输入前6个红球数字
            if(rednumber >= 1 && rednumber <= 33){//对红色竞猜数字范围进行判断
                if(!contains(sarr,rednumber)){
                    sarr[i++] = rednumber;
                }else{
                    System.out.println("请勿重复输入！");
                }
            }else {
                System.out.println("您输入的数字超出范围！请重新输入：");
            }
        }
        System.out.println("请输入第" + sarr.length + "个竞猜数字:");
        while (true){//对蓝色竞猜数字范围进行判断
            int bluenumber = sc.nextInt();//输入最后1个篮球数字
            if(bluenumber >= 1 && bluenumber <= 16){
                sarr[sarr.length - 1] = bluenumber;
                break;
            }else {
                System.out.println("您输入的数字超出范围！请重新输入：");
            }
        }
        return sarr;
    }

    //一个方法对用户输入的竞猜数字进行判断中不中奖
    public static void price(int redCount,int blueCount){
        if(redCount == 6 && blueCount == 1){
            System.out.println("恭喜你得到了1000万的奖金");
        }else if(redCount == 6 && blueCount == 0){
            System.out.println("恭喜你得到了500万的奖金");
        } else if(redCount == 5 && blueCount == 1){
            System.out.println("恭喜你得到了3000元的奖金");
        }else if((redCount == 5 && blueCount == 0)||(redCount == 4 && blueCount == 1)){
            System.out.println("恭喜你得到了200元的奖金");
        }else if((redCount == 4 && blueCount == 0)||(redCount == 3 && blueCount == 1)){
            System.out.println("恭喜你得到了10元的奖金");
        } else if((redCount == 2 && blueCount == 1)||(redCount == 0 && blueCount == 1)||(redCount == 1 && blueCount == 1)){
            System.out.println("恭喜你得到了5元的奖金");
        }else {
            System.out.println("很遗憾，您没有中奖！");
        }
    }

    //下面两个方法用于生成抽奖数字
    public static int[] createNumber(){
        int[] arr = new int[7];//中奖数组
        Random r = new Random();
        for (int i = 0; i < 6;) {
            int redNumber = r.nextInt(33) + 1;//抽6个红色随机数字
            if(!contains(arr,redNumber)){//判断抽奖数组中是否有这个随机数字
                arr[i++] = redNumber;//如果没有就放进抽奖数组里面
            }
        }
        arr[arr.length - 1] = r.nextInt(16) + 1;//抽1个蓝色随机数字
        return arr;
    }
    public static boolean contains(int[] arr,int number){//判断抽奖数组中是否有这个随机数字
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == number){//如果存在，返回true
                return true;
            }
        }
        return false;//遍历完整个抽奖数组都没有这个随机数字，就返回false
    }
}
